﻿var adexpandable = (function(options) {   
    var _bannerId = 'advtop';         // id của thẻ chứa banner trong iframe.
    var _bannerSrc = '';                // đường dẫn tới banner.
    var _iframeId = 'topbanner';  // id của thẻ iframe chứa banner.
    var _isIframe = true;               // chạy thông qua iframe.
    var _parentBannerId = 'idbner-1208';   // id của thẻ cha chứa banner.
    var _width = 950;                  // chiều rộng của banner lúc chưa mở rộng.
    var _height = 70;                   // chiều cao của banner lúc chưa mở rộng.
    var _expandWidth = 950;            // chiều rộng của banner lúc mở rộng.
    var _expandHeight = 70;            // chiều cao của banner lúc mở rộng.
    var _flashVar = '';                 // biến truyền vào banner flash.    
    var _timeDelay = 60;                // thời gian trì hoãn.
    var _acceleration = 0.2;            // gia tốc.
    var _velocity = 1;                  // tốc độ.
    
    var _timeout = new Number();    
    
    var _defined = function (field) {
        return (typeof (field) == 'undefined') ? false : true;
    };
    
    if (typeof (options) == 'object') 
    {
        _bannerId = _defined(options.bannerId) ? options.bannerId : _bannerId;
        _bannerSrc = _defined(options.bannerSrc) ? options.bannerSrc : _bannerSrc;
        _iframeId = _defined(options.iframeId) ? options.iframeId : _iframeId;
        _isIframe = _defined(options.isIframe) ? options.isIframe : _isIframe;        
        _parentBannerId = _defined(options.parentBannerId) ? options.parentBannerId : _parentBannerId;
        _width = _defined(options.width) ? options.width : _width;
        _height = _defined(options.height) ? options.height : _height;
        _expandWidth = _defined(options.widthExpand) ? options.expandWidth : _expandWidth;
        _expandHeight = _defined(options.expandHeight) ? options.expandHeight : _expandHeight;        
        _flashVar = _defined(options.flashVar) ? options.flashVar : _flashVar;
        _timeDelay = _defined(options.timeDelay) ? options.timeDelay : _timeDelay;        
        _acceleration = _defined(options.acceleration) ? options.acceleration : _acceleration;        
        _velocity = _defined(options.velocity) ? options.velocity : _velocity;        
    }
    
    var _scaleProgress = function(type, begin, end, timing)
    {
        clearTimeout(_timeout);
        
        var _el;
        
        if(_isIframe)
    	{
    	    _el = window.parent.document.getElementById(_parentBannerId);
    	    _elIframe = window.parent.document.getElementById(_iframeId);
    	}
    	else
    	{
    	    _el = document.getElementById(_parentBannerId);
    	}
    	
        var _distance = (_acceleration * Math.pow(parseInt(timing), 2)) / 2 + _velocity * parseInt(timing);
        var _begin = new Number();
	    
        switch (type)
        {
	        case 'incr':
	            _begin = parseInt(begin) + parseInt(_distance);
		        
		        if (_begin >= parseInt(end))
		        {
		            _el.style.width	= _expandWidth + 'px';
			        _el.style.height	= end + 'px';			        
		        } 
		        else 
		        {
			        _el.style.width	= _expandWidth + 'px';
			        _el.style.height	= _begin + 'px';				        			        
			        
			        timing++;
			        
			        var _funcTmp = function()
			        {
			            _scaleProgress(type, _begin, end, timing);
			        }
			        
			        _timeout = setTimeout(_funcTmp, _timeDelay);
		        }
		        
		        if(_isIframe)
		        {
		            _elIframe.style.width	= _expandWidth + 'px';
		            _elIframe.style.height	= end + 'px';
		        }
		        	            			        
		        break;
	        case 'decr':
		        _begin = parseInt(begin) - parseInt(_distance);
		        
		        if (_begin <= parseInt(end))
		        {
		            _el.style.width	= _width + 'px';
			        _el.style.height	= end + 'px';			        
		        } 
		        else 
		        {
		            _el.style.width	= _width + 'px';
			        _el.style.height	= _begin + 'px';			        			        
			        
			        timing++;
			        
			        var _funcTmp = function()
			        {
			            _scaleProgress(type, _begin, end, timing);
			        }
			        
			        _timeout = setTimeout(_funcTmp, _timeDelay);
		        }
		        
		        if(_isIframe)
		        {
		            _elIframe.style.width	= _expandWidth + 'px';
		            _elIframe.style.height	= end + 'px';
		        }
		        
		        break;
        }
    };
    
    return {
        buildBanner: function() {
            var banner = '';
            banner = '<object width="' + _expandWidth + '" height="' + _expandHeight + '" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="' + _bannerId + '-swf" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0">';
            banner += '    <param name="movie" value="' + _bannerSrc + '" />';
            banner += '    <param name="quality" value="high" />';
            banner += '    <param name="allowscriptaccess" value="always" />';
            banner += '    <param name="wmode" value="transparent" />';
            banner += '    <param name="flashvars" value="' + _flashVar + '" />';
            banner += '    <embed width="' + _expandWidth + '" height="' + _expandHeight + '" id="' + _bannerId + '-swf" wmode="transparent" flashvars="' + _flashVar + '" quality="high" type="application/x-shockwave-flash" allowscriptaccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer" src="' + _bannerSrc + '" />';
            banner += '</object>';

            document.getElementById(_bannerId).innerHTML = banner;
        },
    
        // mở rộng banner.
        expandBanner: function() {            
            clearTimeout(_timeout);
	        _scaleProgress('incr', _height, _expandHeight, 1);
        },

        // thu gọn banner.
        shrinkBanner: function() {
            clearTimeout(_timeout);
	        _scaleProgress('decr', _expandHeight, _height, 1);
        }
    };
});